package com.atguigu.ssyx.sys;

import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;

import java.io.IOException;
import java.io.RandomAccessFile;

/**
 * @author 杨林
 * @create 2023-07-18 11:11 星期二
 * description:IO流测试：二进制读取文件
 */
@SpringBootTest
@Slf4j
public class IOTest3 {


    /**
     * 二级制读取文件：RandomAccessFile,其不属于流
     *      快速读写文件内容，进行随机访问，常用于多线程下载以及断点续传功能实现
     *      RandomAccessFile#seek(long) 当前指针位置
     *      RandomAccessFile#getFilePointer() 移动指针位置
     */
    @Test
    public void testRandomAccessFile(){
        //以下处理异常的方法，不需要关闭流资源
        try (RandomAccessFile rw = new RandomAccessFile("D:\\IdeaProject\\ioTest\\hello.txt", "rw");){
            int length;
            byte[] bytes = new byte[8192];
            while ((length = rw.read(bytes)) != -1){
                log.info(new String(bytes,0,length));
            }
        }catch (IOException e){
            log.error(e.getMessage());
        }
    }
    
}
